// 测试参考图片Base64转换
const axios = require('axios');

const BASE_URL = 'http://localhost:8080/face';

async function testReferenceImage() {
    console.log('=== 测试参考图片Base64转换 ===\n');
    
    try {
        // 1. 测试获取参考图片
        console.log('1. 获取参考图片Base64编码...');
        const response = await axios.get(`${BASE_URL}/reference-image`);
        
        if (response.data.success) {
            const data = response.data;
            console.log('✅ 参考图片获取成功');
            console.log(`📊 图片信息:`);
            console.log(`   - Base64长度: ${data.image_size} 字符`);
            console.log(`   - 缓存时间戳: ${new Date(data.cache_timestamp).toLocaleString()}`);
            console.log(`   - 缓存持续时间: ${data.cache_duration / 1000 / 60} 分钟`);
            console.log(`   - 消息: ${data.message}`);
            
            // 验证Base64格式
            const base64Pattern = /^[A-Za-z0-9+/]*={0,2}$/;
            if (base64Pattern.test(data.image_base64)) {
                console.log('✅ Base64格式验证通过');
            } else {
                console.log('❌ Base64格式验证失败');
            }
            
            // 计算原始图片大小（近似）
            const originalSize = Math.round((data.image_size * 3) / 4);
            console.log(`   - 原始图片大小（估算）: ${originalSize} 字节`);
            
        } else {
            console.log('❌ 参考图片获取失败:', response.data.error);
        }
        
    } catch (error) {
        console.error('❌ 请求失败:', error.message);
        if (error.response) {
            console.error('   响应状态:', error.response.status);
            console.error('   响应数据:', error.response.data);
        }
    }
    
    console.log('\n=== 测试预加载功能 ===\n');
    
    try {
        // 2. 测试预加载功能
        console.log('2. 预加载参考图片...');
        const preloadResponse = await axios.post(`${BASE_URL}/preload-reference`);
        
        if (preloadResponse.data.success) {
            console.log('✅ 参考图片预加载成功');
            console.log(`📊 预加载信息:`);
            console.log(`   - 图片大小: ${preloadResponse.data.image_size} 字符`);
            console.log(`   - 缓存时间戳: ${new Date(preloadResponse.data.cache_timestamp).toLocaleString()}`);
            console.log(`   - 消息: ${preloadResponse.data.message}`);
        } else {
            console.log('❌ 参考图片预加载失败:', preloadResponse.data.error);
        }
        
    } catch (error) {
        console.error('❌ 预加载请求失败:', error.message);
    }
    
    console.log('\n=== 测试缓存机制 ===\n');
    
    try {
        // 3. 测试缓存机制
        console.log('3. 测试缓存机制（第二次获取应该使用缓存）...');
        const startTime = Date.now();
        const cacheResponse = await axios.get(`${BASE_URL}/reference-image`);
        const endTime = Date.now();
        
        if (cacheResponse.data.success) {
            console.log('✅ 缓存测试成功');
            console.log(`📊 缓存信息:`);
            console.log(`   - 响应时间: ${endTime - startTime}ms`);
            console.log(`   - 图片大小: ${cacheResponse.data.image_size} 字符`);
            console.log(`   - 缓存时间戳: ${new Date(cacheResponse.data.cache_timestamp).toLocaleString()}`);
            
            if (endTime - startTime < 100) {
                console.log('✅ 响应时间很快，可能使用了缓存');
            } else {
                console.log('⚠️  响应时间较慢，可能重新获取了图片');
            }
        }
        
    } catch (error) {
        console.error('❌ 缓存测试失败:', error.message);
    }
}

// 运行测试
testReferenceImage().catch(console.error);


